<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>2487. 从链表中移除节点</title>
</head>
<body>
  <script>
//     给你一个链表的头节点 head 。

// 移除每个右侧有一个更大数值的节点。

// 返回修改后链表的头节点 head 。

 

// 示例 1：



// 输入：head = [5,2,13,3,8]
// 输出：[13,8]
// 解释：需要移除的节点是 5 ，2 和 3 。
// - 节点 13 在节点 5 右侧。
// - 节点 13 在节点 2 右侧。
// - 节点 8 在节点 3 右侧。
// 示例 2：

// 输入：head = [1,1,1,1]
// 输出：[1,1,1,1]
// 解释：每个节点的值都是 1 ，所以没有需要移除的节点。
 

// 提示：

// 给定列表中的节点数目在范围 [1, 105] 内
// 1 <= Node.val <= 105
/**
 * Definition for singly-linked list.
 * function ListNode(val, next) {
 *     this.val = (val===undefined ? 0 : val)
 *     this.next = (next===undefined ? null : next)
 * }
 */
/**
 * @param {ListNode} head
 * @return {ListNode}
 */
 var removeNodes = function(head) {
  let arr = []
  debugger
  while (head) {
    if (arr.length === 0) {
      arr.push(head)
      head = head.next;
      continue
    }
    if (arr[arr.length - 1].val >= head.val) {
      arr.push(head);
      head = head.next;
      continue
    } else {
      arr.pop()
    }
  }
  for (let i = 1; i < arr.length; i++) {
    arr[i-1].next = arr[i];
  }
  arr[arr.length - 1].next = null
  return arr[0]
};
function Node(val, next) {
        this.val = val
        this.next = next
      }

      const head = new Node(5, null)
      const next = new Node(2, null)
      const next2 = new Node(13, null)
      const next3 = new Node(3, null)
      const end = new Node(8, null)
      head.next = next
      next.next = next2
      next2.next = next3
      next3.next = end
      console.log(removeNodes(head));
  </script>
</body>
</html>